import frida
import sys
import os

# --- 配置 ---
# 目标应用的官方包名 (Identifier)
TARGET_APP_IDENTIFIER = "com.instagram.android"
# 目标应用的进程名 (Name)，作为备用方案
TARGET_APP_NAME = "TikTok"
# 要注入的 Frida JS 脚本文件名
JS_SCRIPT_NAME = ["insfrida_test.js","seller_shopHome_data.js"]
# ----------------

def main():
    """
    主函数，用于连接设备、附加进程并注入脚本。
    """
    print("Frida Smart Attach Script for ins")
    print("=" * 30)

    script_path = os.path.join(os.path.dirname(__file__), JS_SCRIPT_NAME[0])
    if not os.path.exists(script_path):
        print(f"[错误] 脚本文件未找到: {script_path}")
        sys.exit(1)

    try:
        print("[1/5] 正在查找 USB 设备...")
        device = frida.get_usb_device(timeout=5)
        print(f"  -> 成功连接到: {device.name}")

        pid = 0
        # 2. 智能查找进程 PID
        print(f"[2/5] 正在查找应用进程...")
        try:
            print(f"  -> 尝试使用官方包名: '{TARGET_APP_IDENTIFIER}'")
            pid = device.get_process(TARGET_APP_IDENTIFIER).pid
            print(f"  -> 成功找到 PID: {pid}")
        except frida.ProcessNotFoundError:
            print(f"  -> 未找到。尝试使用进程名: '{TARGET_APP_NAME}'")
            try:
                pid = device.get_process(TARGET_APP_NAME).pid
                print(f"  -> 成功找到 PID: {pid}")
            except frida.ProcessNotFoundError:
                print(f"\n[错误] 两种方法都未能找到 TikTok 进程。")
                print("请确认 TikTok 正在你的手机上运行。")
                sys.exit(1)

        print(f"[3/5] 正在附加到 PID: {pid}...")
        session = device.attach(pid)
        print("  -> 附加成功！")

        print(f"[4/5] 正在读取脚本 '{script_path}'...")
        with open(script_path, "r", encoding="utf-8") as f:
            js_code = f.read()
        print("  -> 读取成功！")

        script = session.create_script(js_code)
        print("[5/5] 正在注入脚本到 TikTok...")
        script.load()
        print("\n[成功] 脚本已成功注入！Hooks 已激活。")
        sys.stdin.read()

    except Exception as e:
        print(f"\n[发生未知错误] {e}")
    finally:
        print("脚本已退出。")


if __name__ == '__main__':
    main()